﻿#region Copyright © 2013 Paul Miller (Millz)
// All rights are reserved. Reproduction or transmission in whole or in part,
// any form or by any means, electronic, mechanical or otherwise, is prohibited
// without the prior written consent of the copyright owner.
// 
// Filename: SpellLists.cs
// Date:     23/09/2013
// Author:   Paul Miller (Millz)
#endregion
using System.Collections.Generic;
using Insanity.Core;

namespace Insanity.Helpers
{
    internal static class SpellLists
    {

        #region ====================  Buffs ====================

        internal static readonly HashSet<int> Stats = new HashSet<int>
        {
            117666, //Legacy of the Emperor
            1126, //Mark of The Wild
            20217, //Blessing Of Kings
            90363, //Embrace of the Shale Spider
        };

        internal static readonly HashSet<int> Stamina = new HashSet<int>
        {
            469, //Commanding Shout
            6307, //Imp. Blood Pact
            21562, //Power Word: Fortitude
            90364, //Qiraji Fortitude
        };

        internal static readonly HashSet<int> AttackPower = new HashSet<int>
        {
            19506, //Trueshot Aura
            6673, //Battle Shout
            57330, //Horn of Winter
        };

        internal static readonly HashSet<int> SpellPower = new HashSet<int>
        {
            77747, //Burning Wrath
            109773, //Dark Intent
            61316, //Dalaran Brilliance
            1459, //Arcane Brilliance 
            126309, //Still Water
        };

        internal static readonly HashSet<int> AttackSpeed = new HashSet<int>
        {
            30809, //Unleashed Rage
            113742, //Swiftblade's Cunning
            55610, //Improved Icy Talons
            128432, //Cackling Howl
            50498, //Tear Armor

        };

        internal static readonly HashSet<int> SpellHaste = new HashSet<int>
        {
            24907, //Moonkin Aura
            51470, //Elemental Oath
            49868, //Mind Quickening
        };

        internal static readonly HashSet<int> CriticalStrike = new HashSet<int>
        {
            1459, //Arcane Brilliance
            61316, //Dalaran Brilliance
            24932, //Leader of The Pact
            116781, //Legacy of the White Tiger
            97229, //Bellowing Roar
            24604, //Furious Howl
            90309, //Terrifying Roar
            126373, //Fearless Roar
            126309, //Still Water

        };

        internal static readonly HashSet<int> Mastery = new HashSet<int>
        {
            116956, //Grace of Air
            19740, //Blessing of Might
            93435, //Roar of Courage
            128997, //Spirit Beast Blessing
        };


        public static HashSet<int> BuffRaidValid
        {
            get
            {
                return BRvalid;
            }
        }

        private static readonly HashSet<int> BRvalid = new HashSet<int>
        {
            // Mogu'shan Vaults
            117708, // Maddening Shout -- Meng the Demented
            // Heart of Fear
            122784,
            62402, // Reshape Life -- Amber-Shaper Un'sok
            122740, // Convert -- Imperial Vizier Zor'lok
            // Terrace of Endless Spring 
            // -- None
        };

        #endregion ====================  Buffs ====================

        #region Full Crowd Control List

        public static readonly HashSet<int> CrowdControlList = new HashSet<int>
        {
            30217, //Adamantite Grenade
            89766, //Axe Toss (Felguard/Wrathguard)
            90337, //Bad Manner (Monkey)
            710, //Banish
            113801, //Bash (Force of Nature - Feral Treants)
            102795, //Bear Hug
            76780, //Bind Elemental
            117526, //Binding Shot
            2094, //Blind
            105421, //Blinding Light
            115752, //Blinding Light (Glyph of Blinding Light)
            123393, //Breath of Fire (Glyph of Breath of Fire)
            126451, //Clash
            122242, //Clash (not sure which one is right)
            67769, //Cobalt Frag Bomb
            118271, //Combustion Impact
            33786, //Cyclone
            113506, //Cyclone (Symbiosis)
            7922, //Charge Stun
            119392, //Charging Ox Wave
            1833, //Cheap Shot
            44572, //Deep Freeze
            54786, //Portal Leap (Metamorphosis)
            99, //Disorienting Roar
            605, //Dominate Mind
            118895, //Dragon Roar
            31661, //Dragon's Breath
            77505, //Earthquake
            5782, //Fear
            118699, //Fear
            130616, //Fear (Glyph of Fear)
            30216, //Fel Iron Bomb
            105593, //Fist of Justice
            117418, //Fists of Fury
            3355, //Freezing Trap
            91800, //Gnaw
            1776, //Gouge
            853, //Hammer of Justice
            110698, //Hammer of Justice (Paladin)
            51514, //Hex
            2637, //Hibernate
            88625, //Holy Word: Chastise
            119072, //Holy Wrath
            5484, //Howl of Terror
            22703, //Infernal Awakening
            113056, //Intimidating Roar [Cowering in fear] (Warrior)
            113004, //Intimidating Roar [Fleeing in fear] (Warrior)
            5246, //Intimidating Shout (aoe)
            20511, //Intimidating Shout (targeted)
            24394, //Intimidation
            408, //Kidney Shot
            119381, //Leg Sweep
            126246, //Lullaby (Crane)
            22570, //Maim
            115268, //Mesmerize (Shivarra)
            5211, //Mighty Bash
            91797, //Monstrous Blow (Dark Transformation)
            6789, //Mortal Coil
            115078, //Paralysis
            113953, //Paralysis (Paralytic Poison)
            126355, //Paralyzing Quill (Porcupine)
            126423, //Petrifying Gaze (Basilisk)
            118, //Polymorph
            61305, //Polymorph: Black Cat
            28272, //Polymorph: Pig
            61721, //Polymorph: Rabbit
            61780, //Polymorph: Turkey
            28271, //Polymorph: Turtle
            9005, //Pounce
            102546, //Pounce (Incarnation)
            64044, //Psychic Horror
            8122, //Psychic Scream
            113792, //Psychic Terror (Psyfiend)
            118345, //Pulverize
            107079, //Quaking Palm
            13327, //Reckless Charge
            115001, //Remorseless Winter
            20066, //Repentance
            82691, //Ring of Frost
            6770, //Sap
            1513, //Scare Beast
            19503, //Scatter Shot
            132412, //Seduction (Grimoire of Sacrifice)
            6358, //Seduction (Succubus)
            9484, //Shackle Undead
            30283, //Shadowfury
            132168, //Shockwave
            87204, //Sin and Punishment
            104045, //Sleep (Metamorphosis)
            50519, //Sonic Blast (Bat)
            118905, //Static Charge (Capacitor Totem)
            56626, //Sting (Wasp)
            107570, //Storm Bolt
            10326, //Turn Evil
            20549, //War Stomp
            105771, //Warbringer
            19386, //Wyvern Sting
            108194, //Asphyxiate
        };

        #endregion

        #region Target Dummies

        public static readonly HashSet<uint> TargetDummies = new HashSet<uint>
        {
            31146, // Raider's
            54344, // Highlord's Nemesis Trainer (Ebon Hold)
            46647, // 81-85
            32546, // Ebon Knight's (DK)
            31144, // 79-80
            32543, // Veteran's (Eastern Plaguelands)
            32667, // 70
            32542, // 65 EPL
            32666, // 60
            30527, // ?? Boss one (no idea?)
            67127, // MoP Trainings Dummy
            88375, // Turnip Punching Bag -- Item Id
        };

        #endregion

        #region PvP Ignore Units

        public static readonly HashSet<uint> PvPIgnoreUnits = new HashSet<uint>
        {
            // Warrior
            59399, // Skull Banner
            59398, // Demoralizing Banner
            59390, // Mocking Banner

            // Monk
            60849, // Jade Serpent Statue
            61146, // Black Ox Statue

            // Warlock
            55659, // Wild Imp

            // Priest
            64571, // Lightspring

            // DK
            42650, // Army of the Dead
            42651, // Army of the Dead
            24207, // Army of the Dead

            // Banners
            64399, // Battle Standard of Coordination
            18606, // Alliance Battle Standard
            18607, // Horde Battle Standard
            90626, // Guild Battle Standard

            // Demonic Gateway
            59271,
            59262,
            111771,

            29264, // Shaman Spirit Wolfs

            55342, // Mage Mirror Image
            63863, // Mage Mirror Image

            19833, // Snake Trap

            28017, // bloodworm - DK

            70104, // Voodoo Gnome

            17931, // Alliance Peasant

            // NPC Objects
            #region Mine Carts
            60380,
            60379,
            60378,
            39329,
            46485,
            60140,
            #endregion
        };

        #endregion

        #region Ignore Units

        public static readonly HashSet<uint> IgnoreUnits = new HashSet<uint>
        {
            69596, // Throne of Thunder - Ice Comet
            72050, // SoO - Crawler Mine
            
        };

        #endregion
        
        #region Totem List

        public static readonly HashSet<uint> TotemList = new HashSet<uint>
        {
            5913, // Tremor Totem
            2523, // Searing Totem
            2630, // Earthbind Totem
            3527, // Healing Stream Totem
            5929, // Magma Totem
            5925, // Grounding Totem
            61245, // Capacitor Totem
            62002, // Stormlash Totem
            5874, // Strength of Earth Totem
            15430, // Earth Elemental Totem
        };

        #endregion

        public static readonly HashSet<int> HeroismBuff = new HashSet<int>
        {
            32182, //Bloodlust - Shaman (Horde)
            2825, // Heroism - Shaman (Alliance)
            80353, // Time Warp - Mages
            90355 // Ancient Hysteria - Core Hound - Hunter Pet
        };

    }
}
